/*
 PureMVC Javascript port by Frederic Saunier <frederic.saunier@puremvc.org> 
 PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved. 
 Your reuse is governed by the Creative Commons Attribution 3.0 License
*/

/**
* The interface definition for a PureMVC Notification.
*
* <P>
* PureMVC does not rely upon underlying event models such
* as the one provided with Flash, and ActionScript 3 does
* not have an inherent event model.</P>
*
* <P>
* The Observer Pattern as implemented within PureMVC exists
* to support event-driven communication between the
* application and the actors of the MVC triad.</P>
*
* <P>
* Notifications are not meant to be a replacement for Events
* in Flex/Flash/AIR. Generally, <code>IMediator</code> implementors
* place event listeners on their view components, which they
* then handle in the usual way. This may lead to the broadcast of <code>Notification</code>s to
* trigger <code>ICommand</code>s or to communicate with other <code>IMediators</code>. <code>IProxy</code> and <code>ICommand</code>
* instances communicate with each other and <code>IMediator</code>s
* by broadcasting <code>INotification</code>s.</P>
*
* <P>
* A key difference between Flash <code>Event</code>s and PureMVC
* <code>Notification</code>s is that <code>Event</code>s follow the
* 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy
* until some parent component handles the <code>Event</code>, while
* PureMVC <code>Notification</code>s follow a 'Publish/Subscribe'
* pattern. PureMVC INotificationes need not be related to each other in a
* parent/child relationship in order to communicate with one another
* using <code>Notification</code>s.
*
* @see org.puremvc.js.interfaces.IView IView
* @see org.puremvc.js.interfaces.IObserver IObserver
*/

Objs.register("org.puremvc.js.interfaces.INotification",INotification);
var o = INotification.prototype;

/**
* Constructor
*/
function INotification(){}

/**
 * Get the name of the <code>INotification</code> instance.
 * No setter, should be set by constructor only
 */
o.getName = function()/*String*/{};

/**
 * Set the body of the <code>INotification</code> instance
 */
o.setBody = function( body/*Object*/ ){};

/**
 * Get the body of the <code>INotification</code> instance
 */
o.getBody = function()/*Object*/{};

/**
 * Set the type of the <code>INotification</code> instance
 */
o.setType = function( type/*String*/ ){};

/**
 * Get the type of the <code>INotification</code> instance
 */
o.getType = function()/*String*/{};

/**
 * Get the string representation of the <code>INotification</code> instance
 */
o.toString = function()/*String*/{};